python pdf删除图片_使用PyMuPdf提取、删除及替换PDF中的图片文件

本文介绍了如何使用PyMuPdf库在Python中操作PDF文件中的图片,包括提取图片、删除图片和替换图片。通过page.getImageList()获取图片列表,_deleteObject删除指定图片,insertImage方法实现替换,但需要注意原始图片位置和大小的获取问题。
摘要由CSDN通过智能技术生成

有时候想把PDF中的图片文件提取出来,身为程序员的我当然是自己写段代码来实现,先看看了网上的方法,都是逐行遍历,正则匹配来提取什么的,其实没有那么复杂,PyMuPdf官方文档里自带就有提取图片文件的方法,非常简单,下来用代码来记录下:

1.提取图片

#coding:utf-8

import fitz,os

doc = fitz.open('E:\\files\\25109878.pdf')

imgcount=0

for page in doc:

imageList = page.getImageList()

print(imageList)

for imginfo in imageList:

pix = fitz.Pixmap(doc, imginfo[0])

pix.writePNG(os.path.join("test\\t_{}.png".format(imgcount)))

imgcount+=1

短短几行代码聊表心意,通过page.getImageList()提取到图片列表信息,然后在使用fitz.Pixmap提取对应的图片内容,就是这么简单,我们来提取下一张发票里的图片:

电子发票里基本都是文字形式的,只有二维码和下方印章的图片,执行上面的代码看看:

`PyMuPDF`(也称为`fitz`)是一个Python库,用于处理PDF、XPS、EPUB和其他格式的文档。通过`PyMuPDF`可以实现提取PDF文件的电子签章等功能。以下是使用`PyMuPDF`提取电子签章的基本步骤: 1. 首先确保已经安装了`PyMuPDF`库,如果没有安装,可以使用pip安装命令:`pip install pymupdf`。 2. 导入`fitz`模块。 3. 使用`fitz.open()`函数打开目标PDF文件。 4. 遍历PDF的所有页面,使用`get annots`方法获取每一页上的注释列表。 5. 对于获取到的注释列表,检查它们是否为签名注释。在`PyMuPDF`,电子签章是作为特定类型的注释存在的,通常是`/Annot`类型的`/Widget`字典,并且具有`/Subtype`键值`/Sig`。 6. 提取电子签章相关的属性,如签章图像、签章时间、签章者信息等。 下面是一个简单的代码示例: ```python import fitz # 导入fitz模块 def extract_signatures(pdf_path): pdf = fitz.open(pdf_path) # 打开PDF文件 signatures = [] # 初始化一个空列表来存储找到的签章信息 for page in pdf: # 遍历每一页 annots = page.get annots() # 获取当前页的所有注释 for annot in annots: # 遍历注释 if annot["Subtype"] == "Widget" and "/Sig" in annot: # 检查注释是否为电子签章 signature = { "page": page.number, # 获取当前页码 "rect": annot.rect, # 获取签章的位置和大小 # 可以继续提取其他签章信息 } signatures.append(signature) # 将签章信息添加到列表 return signatures # 返回所有找到的签章信息 # 使用函数提取签章信息 pdf_path = "example.pdf" # 替换为你的PDF文件路径 signatures = extract_signatures(pdf_path) for sig in signatures: print(sig) ``` 请确保将`example.pdf`替换为你要提取签章的PDF文件路径。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值